SPB Git forge

spb/spb-cloud

Public
10commits 1branches 0releases
3.2 MBsize
maindefault branch
yesterdaylast push
JavaScript 56.7% TypeScript 42.6%
1.4 KB · 50 lines typescript
Raw Blame History
1import { NextRequest, NextResponse } from "next/server";2import { prisma } from "@/lib/prisma";3import { saveVersion } from "@/lib/storage";4import { logActivity } from "@/lib/activity";56export async function GET(7  request: NextRequest,8  { params }: { params: { id: string } }9) {10  const versions = await prisma.fileVersion.findMany({11    where: { fileId: params.id },12    orderBy: { versionNum: "desc" },13  });1415  return NextResponse.json(16    versions.map((v) => ({ ...v, size: Number(v.size) }))17  );18}1920export async function POST(21  request: NextRequest,22  { params }: { params: { id: string } }23) {24  const file = await prisma.file.findUnique({ where: { id: params.id } });2526  if (!file) {27    return NextResponse.json({ error: "File not found" }, { status: 404 });28  }2930  const body = await request.json().catch(() => ({}));31  const changeNote = body.changeNote || "Manual snapshot";3233  const versionCount = await prisma.fileVersion.count({ where: { fileId: file.id } });34  const result = await saveVersion(file.storagePath, file.name);3536  const version = await prisma.fileVersion.create({37    data: {38      fileId: file.id,39      versionNum: versionCount + 1,40      storagePath: result.storagePath,41      size: BigInt(result.size),42      changeNote,43    },44  });4546  await logActivity("VERSION_CREATE", file.id, `Version ${version.versionNum} created`);4748  return NextResponse.json({ ...version, size: Number(version.size) }, { status: 201 });49}50